<?php

class FeiraModel extends Model {
    
    public $_tabela = "feiras";
    public $dados = array();
    
    /*Função para validar os campos do $_POST e retorna os dados num array $dados */
    public function validar_campos(){
    $erros = array();
    
    
    /*Expressões regulares */
    $expressao2 = "/^[0-9]+$/"; /*Somente números*/
    $expressao3 = "/^(([0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2})|([0-9]{11}))$/";  /*CPF com os pontos e traço ou sem*/
    $expressao4 = "/[a-zA-Z0-9]+[a-zA-Z0-9_.-]+@{1}[a-zA-Z0-9_.-]*\\.+[a-z]{2,4}/";  /*E-mail*/
    /*Fim empressões */
    
      
        if($_POST["nome"] == "" || strlen($_POST["nome"]) < 6 ){
             $erros["Nome:"] = "Mínimo 6 caracteres.<br/> Campo obrigatório.";
        }  
       
        if($_POST["nomeOrganizador"]== "" || strlen($_POST["nomeOrganizador"]) < 6){ 
             $erros["Nome do organizador:"] = "Verifique se os dados foram inseridos corretamente.";
        }
         
        if($_POST["bairro"] == ""  ){
             $erros["Bairro:"] = "Verifique se os dados foram inseridos corretamente.";
        }
        
        if($_POST["cidade"] == ""  ){
             $erros["Cidade:"] = "Verifique se os dados foram inseridos corretamente.";
        }
        
        if($_POST["endereco"] == ""   ){
             $erros["Endereço:"] = "Verifique se os dados foram inseridos corretamente.";
        }
        
        if($_POST["horario"] == ""  ){
             $erros["Horario:"] = "Verifique se os dados foram inseridos corretamente.";
            
        }
        
        if($_POST["data"] == ""   ){
             $erros["Data:"] = "Verifique se os dados foram inseridos corretamente.";
        }
        
        
       
        if(empty($erros)){
            
          $feira = new Feira(   null, /*ID */
                                $_POST["nome"],
                                $_POST["nomeOrganizador"],
                                $_POST["bairro"],
                                $_POST["cidade"],
                                $_POST["data"],
                                $_POST["endereco"],
                                $_POST["horario"]
                            );
 
       return  $this->dados = array (
                //"ID_FEIRA" => $feira->getId(),
                "NOME" => $feira->getNome(),
                "NOME_ORGANIZADOR" => $feira->getNome_organizador(),
                "ENDERECO" => $feira->getEndereco(),
                "BAIRRO" => $feira->getBairro(),
                "CIDADE" => $feira->getCidade(),
                "DATA" => $this->converteData(str_replace("/", "-", $feira->getData())),
                "HORARIO" => $feira->getHorario()
            );
           
        }else {
            
            return $erros; /*retorna o array contendos todos os erros. */
        }  
    }
    
    /*Selecionar os artesãos de cada feira*/
    public function aretsaos_participa_feira($id_feira){
        $q = $this->_db->prepare("SELECT a.NOME, a.CPF , f.ID_FEIRA ,f.NOME as NOME_FEIRA
                                  FROM artesaos a , feiras f , artesaos_participa_feiras apf
                                  WHERE  apf.cpf_artesao = a.CPF
                                  AND apf.id_feira = f.ID_FEIRA
                                  AND apf.id_feira = \"$id_feira\" ORDER BY a.NOME ASC");
        
        $q->setFetchMode(PDO::FETCH_ASSOC);
        $q->execute(); 
        return $q->fetchAll();
      
    }
    
    /*Cadastrada artesãos a uma fera. */
    public function cadastrar_artesaos(){
        
        $id_participacao = $this->retorna_ultimo_id();
        
        
        $id_feira = $_POST["id_feira"];
        $array_artesao = $_POST["artesao_lista_selecionado"];
        
        $query = "INSERT INTO `artesaos_participa_feiras` (`id_participacao`, `cpf_artesao`, `id_feira`) VALUES";
        $_valores = "";
       
            foreach ($array_artesao as $cpf ) { $_valores .= " ('$id_participacao','$cpf','$id_feira') ,";
        }
            $tamanho = strlen($_valores);
            $_valores = rtrim($_valores, ",");
        
             $query = $query . $_valores;
        
       $this->_db->query($query) or die ("erro");
    }
    /*Retorna todos os artesões que estão participando da feira */
    public function artesao_ja_adicionados($id_feira){
        $this->_tabela = "artesaos_participa_feiras";
        $q = $this->_db->prepare(" SELECT a.NOME, cpf_artesao as 'CPF'
                                   FROM artesaos a ,  `$this->_tabela` 
                                   WHERE id_feira=$id_feira AND
                                   cpf_artesao = a.CPF
                                   ORDER BY cpf_artesao ASC");
        $q->setFetchMode(PDO::FETCH_ASSOC);
        $q->execute();
           
        return $q->fetchAll();
    }
    
    /*Remove artesão participanteda feira */
    public function remover_artesao_feira($where){
         $this->_tabela = "artesaos_participa_feiras";
         return $this->delete($where);
    }
    
    
    /*Addiciona o id da feira na tabela de relacionamento com artesoes */
    public function retorna_ultimo_id(){
        
        $q = $this->_db->prepare("SELECT id_participacao+1 
                                  FROM artesaos_participa_feiras 
                                  ORDER BY id_participacao 
                                  DESC LIMIT 1" );
        $q->setFetchMode(PDO::FETCH_ASSOC);
        $q->execute();
           
        $ultimo_id = $q->fetchAll();
        
        if ( empty($ultimo_id)){
            return 0;
        }
         else {
              return $ultimo_id[0]["id_participacao+1"];
              }
    
    }
    
    
    /*CRUD*/
    public function cadastrar($dados){
        return $this->insert($dados);
    }
    
    public function selecionar($where , $limit, $offset, $orderby){
        return $this->read($where, $limit, $offset, $orderby);
    }
   


    public function atualizar($tabela ,$dados,$where){
        return $this->update($tabela, $dados, $where);
        
    }
    
    public function deletar($where){
        return $this->delete($where);
    }
    
   
    
}
?>
